DECLARE @datasource VARCHAR(max)
	DECLARE @cm varchar(MAX)
	CREATE TABLE #result (tablename varchar(40),Script varchar(MAX))
	SET @cm = 
			'SELECT so.NAME AS TableName,''create table ['' + so.name + ''] ('' + o.list + '')'' + CASE WHEN tc.Constraint_Name IS NULL THEN '''' ELSE '' ALTER TABLE '' + so.Name + '' ADD CONSTRAINT '' + tc.Constraint_Name  + '' PRIMARY KEY '' + '' ('' + LEFT(j.List, Len(j.List)-1) + '')'' END as Script
				from sys.sysobjects so
				cross apply
					(SELECT
						''  [''+column_name+''] '' + 
						data_type + case data_type
								when ''sql_variant'' then ''''
								when ''text'' then ''''
								when ''image'' then ''''
								when ''decimal'' then ''('' + cast(numeric_precision_radix as varchar) + '', '' + cast(numeric_scale as varchar) + '')''
								else coalesce(''(''+case when character_maximum_length = -1 then ''MAX'' else cast(character_maximum_length as varchar) end +'')'','''') end + '' '' +
						case when exists ( 
						select id from syscolumns
						where object_name(id)=so.name
						and so.name in {0}
						and name=column_name
						and columnproperty(id,name,''IsIdentity'') = 1 
						) then ''IDENTITY('' + 
						cast(ident_seed(so.name) as varchar) + '','' + 
						cast(ident_incr(so.name) as varchar) + '')''
						else ''''
						end + '' '' +
						 (case when IS_NULLABLE = ''No'' then ''NOT '' else '''' end ) + ''NULL '' + 
						  case when information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN ''DEFAULT ''+ information_schema.columns.COLUMN_DEFAULT ELSE '''' END + '', '' 

					 from information_schema.columns where table_name = so.name and so.name in {0}
					 order by ordinal_position
					FOR XML PATH('''')) o (list)
				left join
					information_schema.table_constraints tc
				on  tc.Table_name = so.Name and so.name in {0}
				AND tc.Constraint_Type  = ''PRIMARY KEY''
				cross apply
					(select ''['' + Column_Name + ''], ''
					 FROM       information_schema.key_column_usage kcu
					 WHERE      kcu.Constraint_Name     = tc.Constraint_Name
					 ORDER BY
						ORDINAL_POSITION
					 FOR XML PATH('''')) j (list)
				where   xtype = ''U''
				AND name NOT IN (''dtproperties'')';
				INSERT INTO #result(TableName,Script) Exec (@cm)
				SELECT Script FROM #result WHERE tablename IN {1}		
				DROP TABLE #result